1 Introduction

The COVID-19 pandemic, caused by the novel coronavirus SARS-CoV-2, has had an unprecedented impact on global health, economies, and daily life since its emergence in late 2019. As the world fights with the challenges posed by this highly contagious virus, epidemiological data have been continuously gathered and released to the public, driving numerous researches and different approaches in trying to understand its patterns of transmission, to identify vulnerable populations, and to inform public health strategies. Due to the severity of the early stage of the pandemic and its wide impact on global production, data of high quality and accuracy were gathered in the nation through surveys and reports, so we believed that the COVID-19 data sets could be more informative and extensive than other epidemiology data.

In this assignment, we looked into the COVID-19 epidemiology data sets provided by Statistics Canada along with other related data sets. We attempted to answer three major questions in three subsections:

  1. We wanted to find if there was a possible relationship between the COVID pandemic and the death counts for 2020, 2021, 2022 and 2023. Through this question, one might be able to draw insights on whether the virus has had a dangerous impact on the overall public health.

  2. We gathered data of COVID-19 long term symptom among Canadian adults. We wanted to draw some conclusions on whether the virus had any impact on the long-term health condition of Canadians.

  3. We wanted to measure the relationship between the risk prevalence and some factors like vaccination status, chronic conditions and having or not a direct contact with people etc. By building a statistical model between the response and predictors, it helped us understand what procedures or conditions can affect the prevalence of COVID-19.

2 Method

2.1 Section 1: Mortality

We used two data sets to explore the relationship between COVID-19 and the mortality in Canada. First data set is focus on the COVID-19 cases and death published by government of Canada to explore the number of new infections and deaths numbers in Canada and updates every Monday morning from Feb.01,2020 to Oct.28, 2023.

This data set contains 2940 observations of 23 variables,including the total number of COVID-19 infections and deaths and their rates from January 2020 until the end of the reporting week, weekly and bi-weekly number of infection and deaths and their rates. Additionally, it includes the average daily death counts and rates derived from both weekly and bi-weekly data. In this section, our analysis emphasizes variables that pertain to both weekly and overall data. The data dictionary detailing the selected variables is provided below.

Table 2.1.1: COVID-19 Cases and Death Data Dictionary
Variables Type Example Number.Unique PctMissing Comment
prname character British Columbia, Alberta 15 0% English name of jurisdiction (province, territory, Canada)
date character 2020-02-01, 2020-02-08 196 0% Last day of the epidemiologic week for which the data represent. Epidemiological weeks are from Sunday to Saturday and this date will always fall on a Saturday.
reporting_year integer 2020, 2021 4 0% The calendar year associated with the epidemiologic week (based on the Fluwatch weeks calendar) in which the data was reported.(2020-2023)
totalcases integer 1, 0 2147 0% The total number of cases reported from January 2020 until the end of the reporting week in a jurisdiction.
numtotal_last7 numeric 1, 0 1407 9.42% Total number of cases during the reporting week for a jurisdiction, minus the total number of cases from that jurisdiction's previous week's update.
numdeaths integer 0, 1 1430 0% The total number of deaths reported from January 2020 until the end of the reporting week in a jurisdiction.
numdeaths_last7 numeric 0, 1 295 11.02% Total number of deaths for a jurisdiction, minus the total number of deaths from that jurisdiction's previous week's update.

From the Table 2.1.1, we found that the percentage of missing value in weekly cases and death counts are abound 10%, which is not good for our research.

Second data set is the provisional weekly death counts, by ages and sex from 2010 to 2023, published by Statistics Canada. This data set record the 149730 observations of 17 variables that are relevant for monitoring the impacts of mortality the province and territory in Canada. We also deleted some variables which are irrelevant with our study or can not delivered the useful information in this data set. Such as variables like STATUS and TERMINATED are missing in all observation in this data set and variables DECIMALS and UOM_ID are the same for all variables. The data dictionary for remaining variables is provided below.

In order to have better understanding about the mortality in Canada, we visualize the weekly death counts every year form 2010 to 2023 in Figure(), it is clear to see that the the number of annual deaths is increasing every year. The overall trend from 2010 to 2019 is similar, with an general decrease from the begging to the middle of the year then followed by an upward trend until the year end. In the middle of 2020 and the beginning of 2022, there exist two significant spikes on the figure. These pronounced increases in case counts raise the possibility that they may be attributed to distinct outbreaks of the epidemic.

To verify this conjecture, we showed the weekly number of death without the COVID-19 cases in Figure(). The spikes in 2020 and 2022 are removed but the small spike in mid-2021 still exist. So death counts rapid increase in 2020 and 2022 may caused by COVID-19 and we will discuss the probability of COVID-19 deaths in the total number of death condition on year in the following section.

2.2 Section 2: Long-term Impact

2.3 Section 3: Prevalence Modeling

3 Result

3.1 Section 1: Mortality

In order to discuss the probability of COVID-19 death in the total death, we first calculated the proportion for the COVID-19 death from 2020 to 2023 in Table 3.1.1. To our surprise, the proportion in 2022 is the higher than the proportion in 2020, 0.0574 and 0.0490 respectively. This might because the outbreak of the new variant Omicron. The proportion in 2021 and 2023 are relatively low might because the population of vaccination increase.

To test the homogeneity for COVID-19 death probability condition on years, we can use the Chi-square test and the null and alternative hypothesis of homogeneity corresponding to:

\[\begin{gather*} H_0:P_{j|i}\ =\ P_{·j}\\ H_1:P_{j|i}\neq P_{·j} \end{gather*}\]

The Chi-squares statistics computed by Chi-squared test and Likelihood ratio test is different but the p-value is less than 0.05 in both test. Thus we reject the null hypothesis under the 0.05 level since there have strong evidence that exist significant difference in probability in COVID-19 death probability condition on years.

Then we can compute the relative risk and odds ratio for years to measure the association between years and COVID-19 death proportion. We chose the COVID-19 death proportion in 2020 year as baseline category and compute the relative risks and odds ratios.

Table 3.1.4 showed the Relative risks in 2021,2022 and 2023. We can see that relative risks in 2021,and 2023 are less than 1, we can concluded that if a people died in COVID-19, this people is more likely died in 2020 than 2021 and 2023. The relative risk in 2022 are greater than 1, we can concluded that if a people died in COVID-19, this people is more likely died in 2022 than 2020.

From Table 3.1.5, we can see that the odds ratios for all three years are not equal to 1, which indicated that there exists association between year and COVID-19 death proportion. For odds ratios in 2021 and 2023, there exist positive association between probability of death caused by COVID-19. The association in 2022 is negative between proportion of COVID-19 death in total death.

3.2 Section 2: Long-term Impact

3.3 Section 3: Prevalence Modeling

4 Discussion

4.1 Section 1: Mortality

4.2 Section 2: Long-term Impact

4.3 Section 3: Prevalence Modeling

5 Conclusion

6 References

LS0tCnRpdGxlOiAiTUFUNTMxNyBDYXRlZ29yaWNhbCBBc3NpZ25tZW50IDIiCmF1dGhvcjoKLSBUZW5nIExpKDczNzMwODYpCi0gWmhpemUgTHUoMzAwMDc1MTE0KQotIENodXRvbmcgWmhhbmcoMzAwMzExMzI1KQpvdXRwdXQ6IAogIGh0bWxfbm90ZWJvb2s6IAogICAgdG9jOiB5ZXMKICAgIG51bWJlcl9zZWN0aW9uczogeWVzCiAgICBmaWdfY2FwdGlvbjogeWVzCmhlYWRlci1pbmNsdWRlczoKLSBccmVuZXdjb21tYW5ke1xhbmR9e1xcfQotIFx1c2VwYWNrYWdle2Zsb2F0fQotIFxmbG9hdHBsYWNlbWVudHtmaWd1cmV9e0h9CmJpYmxpb2dyYXBoeTogUmVmZXJlbmNlcy5iaWIKbGluay1jaXRhdGlvbnM6IHllcwotLS0KCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Ci50aXRsZSwgLmF1dGhvcnt0ZXh0LWFsaWduOiBjZW50ZXI7fQpib2R5e2ZvbnQtc2l6ZTogMTJwdDt9CnRhYmxle2ZvbnQtc2l6ZTogMTJwdDt9Cmgxe2ZvbnQtc2l6ZTogMTRwdDt9Cmgye2ZvbnQtc2l6ZTogMTJwdDt9Cjwvc3R5bGU+CgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSwgd2FybmluZyA9IEZBTFNFKQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShwbG90bHkpCmxpYnJhcnkoa2FibGVFeHRyYSkKbGlicmFyeShEZXNjVG9vbHMpCmxpYnJhcnkoZ3QpCmxpYnJhcnkoc3RhcmdhemVyKQpgYGAKCmBgYHtyfQpDQ0FIUzwtcmVhZC5jc3YoIkNDQUhTLmNzdiIsIGhlYWRlciA9IFRSVUUpCkNvdmlkPC1yZWFkLmNzdigiQ292aWQuY3N2IiwgaGVhZGVyID0gVFJVRSkKV01vcnRhbGl0eTwtcmVhZC5jc3YoIldlZWtseU1vcnRhbGl0eS5jc3YiLCBoZWFkZXIgPSBUUlVFKQpFeE1vcnRhbGl0eTwtcmVhZC5jc3YoIkV4Y2Vzc01vcnRhbGl0eS5jc3YiLCBoZWFkZXIgPSBUUlVFKQpMb25nVGVybTwtcmVhZC5jc3YoIkxvbmdUZXJtLmNzdiIsIGhlYWRlciA9IFRSVUUpCmBgYAoKIyBJbnRyb2R1Y3Rpb24KClRoZSBDT1ZJRC0xOSBwYW5kZW1pYywgY2F1c2VkIGJ5IHRoZSBub3ZlbCBjb3JvbmF2aXJ1cyBTQVJTLUNvVi0yLCBoYXMgaGFkIGFuIHVucHJlY2VkZW50ZWQgaW1wYWN0IG9uIGdsb2JhbCBoZWFsdGgsIGVjb25vbWllcywgYW5kIGRhaWx5IGxpZmUgc2luY2UgaXRzIGVtZXJnZW5jZSBpbiBsYXRlIDIwMTkuIEFzIHRoZSB3b3JsZCBmaWdodHMgd2l0aCB0aGUgY2hhbGxlbmdlcyBwb3NlZCBieSB0aGlzIGhpZ2hseSBjb250YWdpb3VzIHZpcnVzLCBlcGlkZW1pb2xvZ2ljYWwgZGF0YSBoYXZlIGJlZW4gY29udGludW91c2x5IGdhdGhlcmVkIGFuZCByZWxlYXNlZCB0byB0aGUgcHVibGljLCBkcml2aW5nIG51bWVyb3VzIHJlc2VhcmNoZXMgYW5kIGRpZmZlcmVudCBhcHByb2FjaGVzIGluIHRyeWluZyB0byB1bmRlcnN0YW5kIGl0cyBwYXR0ZXJucyBvZiB0cmFuc21pc3Npb24sIHRvIGlkZW50aWZ5IHZ1bG5lcmFibGUgcG9wdWxhdGlvbnMsIGFuZCB0byBpbmZvcm0gcHVibGljIGhlYWx0aCBzdHJhdGVnaWVzLiBEdWUgdG8gdGhlIHNldmVyaXR5IG9mIHRoZSBlYXJseSBzdGFnZSBvZiB0aGUgcGFuZGVtaWMgYW5kIGl0cyB3aWRlIGltcGFjdCBvbiBnbG9iYWwgcHJvZHVjdGlvbiwgZGF0YSBvZiBoaWdoIHF1YWxpdHkgYW5kIGFjY3VyYWN5IHdlcmUgZ2F0aGVyZWQgaW4gdGhlIG5hdGlvbiB0aHJvdWdoIHN1cnZleXMgYW5kIHJlcG9ydHMsIHNvIHdlIGJlbGlldmVkIHRoYXQgdGhlIENPVklELTE5IGRhdGEgc2V0cyBjb3VsZCBiZSBtb3JlIGluZm9ybWF0aXZlIGFuZCBleHRlbnNpdmUgdGhhbiBvdGhlciBlcGlkZW1pb2xvZ3kgZGF0YS4KCkluIHRoaXMgYXNzaWdubWVudCwgd2UgbG9va2VkIGludG8gdGhlIENPVklELTE5IGVwaWRlbWlvbG9neSBkYXRhIHNldHMgcHJvdmlkZWQgYnkgU3RhdGlzdGljcyBDYW5hZGEgYWxvbmcgd2l0aCBvdGhlciByZWxhdGVkIGRhdGEgc2V0cy4gV2UgYXR0ZW1wdGVkIHRvIGFuc3dlciB0aHJlZSBtYWpvciBxdWVzdGlvbnMgaW4gdGhyZWUgc3Vic2VjdGlvbnM6CgoxLiBXZSB3YW50ZWQgdG8gZmluZCBpZiB0aGVyZSB3YXMgYSBwb3NzaWJsZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgQ09WSUQgcGFuZGVtaWMgYW5kIHRoZSBkZWF0aCBjb3VudHMgZm9yIDIwMjAsIDIwMjEsIDIwMjIgYW5kIDIwMjMuIFRocm91Z2ggdGhpcyBxdWVzdGlvbiwgb25lIG1pZ2h0IGJlIGFibGUgdG8gZHJhdyBpbnNpZ2h0cyBvbiB3aGV0aGVyIHRoZSB2aXJ1cyBoYXMgaGFkIGEgZGFuZ2Vyb3VzIGltcGFjdCBvbiB0aGUgb3ZlcmFsbCBwdWJsaWMgaGVhbHRoLgoKMi4gV2UgZ2F0aGVyZWQgZGF0YSBvZiBDT1ZJRC0xOSBsb25nIHRlcm0gc3ltcHRvbSBhbW9uZyBDYW5hZGlhbiBhZHVsdHMuIFdlIHdhbnRlZCB0byBkcmF3IHNvbWUgY29uY2x1c2lvbnMgb24gd2hldGhlciB0aGUgdmlydXMgaGFkIGFueSBpbXBhY3Qgb24gdGhlIGxvbmctdGVybSBoZWFsdGggY29uZGl0aW9uIG9mIENhbmFkaWFucy4KCjMuIFdlIHdhbnRlZCB0byBtZWFzdXJlIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgcmlzayBwcmV2YWxlbmNlIGFuZCBzb21lIGZhY3RvcnMgbGlrZSB2YWNjaW5hdGlvbiBzdGF0dXMsIGNocm9uaWMgY29uZGl0aW9ucyBhbmQgaGF2aW5nIG9yIG5vdCBhIGRpcmVjdCBjb250YWN0IHdpdGggcGVvcGxlIGV0Yy4gQnkgYnVpbGRpbmcgYSBzdGF0aXN0aWNhbCBtb2RlbCBiZXR3ZWVuIHRoZSByZXNwb25zZSBhbmQgcHJlZGljdG9ycywgaXQgaGVscGVkIHVzIHVuZGVyc3RhbmQgd2hhdCBwcm9jZWR1cmVzIG9yIGNvbmRpdGlvbnMgY2FuIGFmZmVjdCB0aGUgcHJldmFsZW5jZSBvZiBDT1ZJRC0xOS4gIAoKIyBNZXRob2QKCiMjIFNlY3Rpb24gMTogTW9ydGFsaXR5CldlIHVzZWQgdHdvIGRhdGEgc2V0cyB0byBleHBsb3JlIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBDT1ZJRC0xOSBhbmQgdGhlIG1vcnRhbGl0eSBpbiBDYW5hZGEuIEZpcnN0IGRhdGEgc2V0IGlzIGZvY3VzIG9uIHRoZSBDT1ZJRC0xOSBjYXNlcyBhbmQgZGVhdGggcHVibGlzaGVkIGJ5IGdvdmVybm1lbnQgb2YgQ2FuYWRhIHRvIGV4cGxvcmUgdGhlIG51bWJlciBvZiBuZXcgaW5mZWN0aW9ucyBhbmQgZGVhdGhzIG51bWJlcnMgaW4gQ2FuYWRhIGFuZCB1cGRhdGVzIGV2ZXJ5IE1vbmRheSBtb3JuaW5nIGZyb20gRmViLjAx77yMMjAyMCB0byBPY3QuMjgsIDIwMjMuIAoKVGhpcyBkYXRhIHNldCBjb250YWlucyAyOTQwIG9ic2VydmF0aW9ucyBvZiAyMyB2YXJpYWJsZXMsaW5jbHVkaW5nIHRoZSB0b3RhbCBudW1iZXIgb2YgQ09WSUQtMTkgaW5mZWN0aW9ucyBhbmQgZGVhdGhzIGFuZCB0aGVpciByYXRlcyBmcm9tIEphbnVhcnkgMjAyMCB1bnRpbCB0aGUgZW5kIG9mIHRoZSByZXBvcnRpbmcgd2Vlaywgd2Vla2x5IGFuZCBiaS13ZWVrbHkgbnVtYmVyIG9mIGluZmVjdGlvbiBhbmQgZGVhdGhzIGFuZCB0aGVpciByYXRlcy4gQWRkaXRpb25hbGx5LCBpdCBpbmNsdWRlcyB0aGUgYXZlcmFnZSBkYWlseSBkZWF0aCBjb3VudHMgYW5kIHJhdGVzIGRlcml2ZWQgZnJvbSBib3RoIHdlZWtseSBhbmQgYmktd2Vla2x5IGRhdGEuIEluIHRoaXMgc2VjdGlvbiwgb3VyIGFuYWx5c2lzIGVtcGhhc2l6ZXMgdmFyaWFibGVzIHRoYXQgcGVydGFpbiB0byBib3RoIHdlZWtseSBhbmQgb3ZlcmFsbCBkYXRhLiBUaGUgZGF0YSBkaWN0aW9uYXJ5IGRldGFpbGluZyB0aGUgc2VsZWN0ZWQgdmFyaWFibGVzIGlzIHByb3ZpZGVkIGJlbG93LgpgYGB7cn0KI2RhdGEgZGljdGlvbmFyeTpDb3ZpZCBjYXNlcyBhbmQgZGVhdGgKQ09WSUQ8LUNvdmlkJT4lCiAgc2VsZWN0KHBybmFtZSxkYXRlLHJlcG9ydGluZ195ZWFyLHRvdGFsY2FzZXMsbnVtdG90YWxfbGFzdDcsbnVtZGVhdGhzLG51bWRlYXRoc19sYXN0NykKCkNvdmlkREQ8LWRhdGEuZnJhbWUoCiAgVmFyaWFibGVzPWNvbG5hbWVzKENPVklEKSwgICAKICBUeXBlPXNhcHBseShDT1ZJRCwgZnVuY3Rpb24oeCkgY2xhc3MoeCkpLAogIEV4YW1wbGU9c2FwcGx5KENPVklELCBmdW5jdGlvbih4KSBwYXN0ZShhcy5jaGFyYWN0ZXIoaGVhZCh1bmlxdWUoeCksMikpLCBjb2xsYXBzZSA9ICIsICIpKSwKICBOdW1iZXIuVW5pcXVlPXNhcHBseShDT1ZJRCwgZnVuY3Rpb24oeCkgbGVuZ3RoKHVuaXF1ZSh4KSkpLAogIFBjdE1pc3Npbmc9c2FwcGx5KENPVklELCBmdW5jdGlvbih4KSBwYXN0ZTAocm91bmQoc3VtKGlzLm5hKHgpKS9sZW5ndGgoeCksIDQpKjEwMCwiJSIpKSwKICBDb21tZW50PWMoICJFbmdsaXNoIG5hbWUgb2YganVyaXNkaWN0aW9uIChwcm92aW5jZSwgdGVycml0b3J5LCBDYW5hZGEpIiwKICAgICAgICAgICAgICAiTGFzdCBkYXkgb2YgdGhlIGVwaWRlbWlvbG9naWMgd2VlayBmb3Igd2hpY2ggdGhlIGRhdGEgcmVwcmVzZW50LiBFcGlkZW1pb2xvZ2ljYWwgd2Vla3MgYXJlIGZyb20gU3VuZGF5IHRvIFNhdHVyZGF5IGFuZCB0aGlzIGRhdGUgd2lsbCBhbHdheXMgZmFsbCBvbiBhIFNhdHVyZGF5LiIsCiAgICAgICAgICAgICAiVGhlIGNhbGVuZGFyIHllYXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBlcGlkZW1pb2xvZ2ljIHdlZWsgKGJhc2VkIG9uIHRoZSBGbHV3YXRjaCB3ZWVrcyBjYWxlbmRhcikgaW4gd2hpY2ggdGhlIGRhdGEgd2FzIHJlcG9ydGVkLigyMDIwLTIwMjMpIiwKICAgICAgICAgICAgICAiVGhlIHRvdGFsIG51bWJlciBvZiBjYXNlcyByZXBvcnRlZCBmcm9tIEphbnVhcnkgMjAyMCB1bnRpbCB0aGUgZW5kIG9mIHRoZSByZXBvcnRpbmcgd2VlayBpbiBhIGp1cmlzZGljdGlvbi4iLAogICAgICAgICAgICAgIlRvdGFsIG51bWJlciBvZiBjYXNlcyBkdXJpbmcgdGhlIHJlcG9ydGluZyB3ZWVrIGZvciBhIGp1cmlzZGljdGlvbiwgbWludXMgdGhlIHRvdGFsIG51bWJlciBvZiBjYXNlcyBmcm9tIHRoYXQganVyaXNkaWN0aW9uJ3MgcHJldmlvdXMgd2VlaydzIHVwZGF0ZS4iLAogICAgICAgICAgICAgIlRoZSB0b3RhbCBudW1iZXIgb2YgZGVhdGhzIHJlcG9ydGVkIGZyb20gSmFudWFyeSAyMDIwIHVudGlsIHRoZSBlbmQgb2YgdGhlIHJlcG9ydGluZyB3ZWVrIGluIGEganVyaXNkaWN0aW9uLiIsCiAgICAgICAgICAgICAiVG90YWwgbnVtYmVyIG9mIGRlYXRocyBmb3IgYSBqdXJpc2RpY3Rpb24sIG1pbnVzIHRoZSB0b3RhbCBudW1iZXIgb2YgZGVhdGhzIGZyb20gdGhhdCBqdXJpc2RpY3Rpb24ncyBwcmV2aW91cyB3ZWVrJ3MgdXBkYXRlLiIKICAgICAgICAgICAgIAogICAgICAgICAgICkKKQpDb3ZpZEREJT4lCiAgZ3QoKSU+JXRhYl9oZWFkZXIoCiAgICB0aXRsZSA9ICJUYWJsZSAyLjEuMTogQ09WSUQtMTkgQ2FzZXMgYW5kIERlYXRoIERhdGEgRGljdGlvbmFyeSIpCgpgYGAKRnJvbSB0aGUgVGFibGUgMi4xLjEsIHdlIGZvdW5kIHRoYXQgdGhlIHBlcmNlbnRhZ2Ugb2YgbWlzc2luZyB2YWx1ZSBpbiB3ZWVrbHkgY2FzZXMgYW5kIGRlYXRoIGNvdW50cyBhcmUgYWJvdW5kIDEwJSwgd2hpY2ggaXMgbm90IGdvb2QgZm9yIG91ciByZXNlYXJjaC4gCgpTZWNvbmQgZGF0YSBzZXQgaXMgdGhlIHByb3Zpc2lvbmFsIHdlZWtseSBkZWF0aCBjb3VudHMsIGJ5IGFnZXMgYW5kIHNleCBmcm9tIDIwMTAgdG8gMjAyMywgcHVibGlzaGVkIGJ5IFN0YXRpc3RpY3MgQ2FuYWRhLiBUaGlzIGRhdGEgc2V0IHJlY29yZCB0aGUgMTQ5NzMwIG9ic2VydmF0aW9ucyBvZiAxNyB2YXJpYWJsZXMgdGhhdCBhcmUgcmVsZXZhbnQgZm9yIG1vbml0b3JpbmcgdGhlIGltcGFjdHMgb2YgIG1vcnRhbGl0eSB0aGUgcHJvdmluY2UgYW5kIHRlcnJpdG9yeSBpbiBDYW5hZGEuIFdlIGFsc28gZGVsZXRlZCBzb21lIHZhcmlhYmxlcyB3aGljaCBhcmUgaXJyZWxldmFudCB3aXRoIG91ciBzdHVkeSBvciBjYW4gbm90IGRlbGl2ZXJlZCB0aGUgdXNlZnVsIGluZm9ybWF0aW9uIGluIHRoaXMgZGF0YSBzZXQuIFN1Y2ggYXMgdmFyaWFibGVzIGxpa2UgU1RBVFVTIGFuZCBURVJNSU5BVEVEIGFyZSBtaXNzaW5nIGluIGFsbCBvYnNlcnZhdGlvbiBpbiB0aGlzIGRhdGEgc2V0IGFuZCB2YXJpYWJsZXMgREVDSU1BTFMgYW5kIFVPTV9JRCBhcmUgdGhlIHNhbWUgZm9yIGFsbCB2YXJpYWJsZXMuIFRoZSBkYXRhIGRpY3Rpb25hcnkgZm9yIHJlbWFpbmluZyB2YXJpYWJsZXMgaXMgcHJvdmlkZWQgYmVsb3cuCmBgYHtyfQojZGF0YSBkaWN0aW9uYXJ5OldlZWtseSBtb3J0YWxpdHkKbW9ydGFsaXR5PC1XTW9ydGFsaXR5JT4lCiAgc2VsZWN0KFJFRl9EQVRFLEdFTyxBZ2UuYXQudGltZS5vZi5kZWF0aCxTZXgsQ2hhcmFjdGVyaXN0aWNzLFVPTSxWQUxVRSkKZGF0YS5mcmFtZSgKICBWYXJpYWJsZXM9Y29sbmFtZXMobW9ydGFsaXR5KSwgICAKICBUeXBlPXNhcHBseShtb3J0YWxpdHksIGZ1bmN0aW9uKHgpIGNsYXNzKHgpKSwKICBFeGFtcGxlPXNhcHBseShtb3J0YWxpdHksIGZ1bmN0aW9uKHgpIHBhc3RlKGFzLmNoYXJhY3RlcihoZWFkKHVuaXF1ZSh4KSwyKSksIGNvbGxhcHNlID0gIiwgIikpLAogIE51bWJlci5VbmlxdWU9c2FwcGx5KG1vcnRhbGl0eSwgZnVuY3Rpb24oeCkgbGVuZ3RoKHVuaXF1ZSh4KSkpLAogIFBjdE1pc3Npbmc9c2FwcGx5KG1vcnRhbGl0eSwgZnVuY3Rpb24oeCkgcGFzdGUwKHJvdW5kKHN1bShpcy5uYSh4KSkvbGVuZ3RoKHgpLCA0KSoxMDAsIiUiKSksCiAgQ29tbWVudD1jKCJSZWZlcmVuY2UgcGVyaW9kIGZvciB0aGUgc2VyaWVzIGJlaW5nIHJlbGVhc2VkLigyMDEwLTIwMjMpIiwKICAgICAgICAgICAgICJOYW1lIG9mIGRpbWVuc2lvbi4gVGhlcmUgY2FuIGJlIHVwIHRvIDEwIGRpbWVuc2lvbnMgaW4gYSBkYXRhIHRhYmxlLgooaS5lLiBHZW9ncmFwaHkpIiwKICAgICAgICAgICAgICJBZ2UgZ3JvdW8gd2hlbiBkZWF0aCBvY2N1cnJlZCIsCiAgICAgICAgICAgICAiU2V4ICIsCiAgICAgICAgICAgICAiTnVtYmVyIG9mIGRlYXRocyIsCiAgICAgICAgICAgICAiVGhlIHVuaXQgb2YgbWVhc3VyZSBhcHBsaWVkIHRvIGEgbWVtYmVyIGdpdmVuIGluIHRleHQuIiwKICAgICAgICAgICAgICJUb3RhbCBudW1iZXIgb2YgZGVhdGggdW5kZXIgY2VydGFpbiBjaGFyYWN0ZXJpc3RpY3MiCiAgICAgICAgICAgKQopJT4lZ3QoKSU+JXRhYl9oZWFkZXIoCiAgICB0aXRsZSA9ICJUYWJsZSAyLjEuMjogV2Vla2x5IE1vcnRhbGl0eSBEYXRhIERpY3Rpb25hcnkiKQoKCmBgYApJbiBvcmRlciB0byBoYXZlIGJldHRlciB1bmRlcnN0YW5kaW5nIGFib3V0IHRoZSBtb3J0YWxpdHkgaW4gQ2FuYWRhLCB3ZSB2aXN1YWxpemUgdGhlIHdlZWtseSBkZWF0aCBjb3VudHMgZXZlcnkgeWVhciBmb3JtIDIwMTAgdG8gMjAyMyBpbiBGaWd1cmUoKSwgaXQgaXMgY2xlYXIgdG8gc2VlIHRoYXQgdGhlICB0aGUgbnVtYmVyIG9mIGFubnVhbCBkZWF0aHMgaXMgaW5jcmVhc2luZyBldmVyeSB5ZWFyLiBUaGUgb3ZlcmFsbCB0cmVuZCBmcm9tIDIwMTAgdG8gMjAxOSBpcyBzaW1pbGFyLCB3aXRoIGFuIGdlbmVyYWwgIGRlY3JlYXNlIGZyb20gdGhlIGJlZ2dpbmcgdG8gdGhlIG1pZGRsZSBvZiB0aGUgeWVhciB0aGVuIGZvbGxvd2VkIGJ5IGFuIHVwd2FyZCB0cmVuZCB1bnRpbCB0aGUgeWVhciBlbmQuIEluIHRoZSBtaWRkbGUgb2YgMjAyMCBhbmQgdGhlIGJlZ2lubmluZyBvZiAyMDIyLCB0aGVyZSBleGlzdCB0d28gc2lnbmlmaWNhbnQgc3Bpa2VzIG9uIHRoZSBmaWd1cmUuIFRoZXNlIHByb25vdW5jZWQgaW5jcmVhc2VzIGluIGNhc2UgY291bnRzIHJhaXNlIHRoZSBwb3NzaWJpbGl0eSB0aGF0IHRoZXkgbWF5IGJlIGF0dHJpYnV0ZWQgdG8gZGlzdGluY3Qgb3V0YnJlYWtzIG9mIHRoZSBlcGlkZW1pYy4gCgpUbyB2ZXJpZnkgdGhpcyBjb25qZWN0dXJlLCB3ZSBzaG93ZWQgdGhlIHdlZWtseSBudW1iZXIgb2YgZGVhdGggd2l0aG91dCB0aGUgQ09WSUQtMTkgY2FzZXMgaW4gRmlndXJlKCkuIFRoZSBzcGlrZXMgaW4gMjAyMCBhbmQgMjAyMiBhcmUgcmVtb3ZlZCBidXQgdGhlIHNtYWxsIHNwaWtlIGluIG1pZC0yMDIxIHN0aWxsIGV4aXN0LiBTbyBkZWF0aCBjb3VudHMgcmFwaWQgaW5jcmVhc2UgaW4gMjAyMCBhbmQgMjAyMiBtYXkgY2F1c2VkIGJ5IENPVklELTE5IGFuZCB3ZSB3aWxsIGRpc2N1c3MgdGhlIHByb2JhYmlsaXR5IG9mICBDT1ZJRC0xOSBkZWF0aHMgaW4gdGhlIHRvdGFsIG51bWJlciBvZiBkZWF0aCBjb25kaXRpb24gb24geWVhciBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb24uCmBgYHtyfQojdml6dWFsaXplIHRoZSBkZWF0aCB3aXRoIGFuZCB3aXRob3V0IGNvdmlkCldNb3J0YWxpdHklPiUKICBtdXRhdGUoWWVhcj15ZWFyKFJFRl9EQVRFKSxXZWVrPXN1YnN0cihSRUZfREFURSw2LDEwKSklPiUKICBtdXRhdGUoWWVhcj1mYWN0b3IoWWVhcikpJT4lCiAgZmlsdGVyKEFnZS5hdC50aW1lLm9mLmRlYXRoPT0iQWdlIGF0IHRpbWUgb2YgZGVhdGgsIGFsbCBhZ2VzIiAmIFNleD09IkJvdGggc2V4ZXMiICYgR0VPPT0iQ2FuYWRhLCBwbGFjZSBvZiBvY2N1cnJlbmNlIiklPiUKICBwbG90X2x5KHg9fldlZWssIHk9flZBTFVFLCBjb2xvcj1+WWVhcix0eXBlID0gInNjYXR0ZXIiLCBtb2RlPSJsaW5lcyIpJT4lCiAgbGF5b3V0KHdpZHRoID0gMTAwMCwgaGVpZ2h0ID0gNTAwLHRpdGxlID0gJ0ZpZ3VyZTIuMS4xOldlZWtseSBEZWF0aCBDb3VudHMnLCB5YXhpcyA9IGxpc3QodGl0bGUgPSAiTnVtYmVyIG9mIERlYXRoIikpCmBgYAoKCmBgYHtyfQpXaXRob3V0YzwtV01vcnRhbGl0eSU+JQogIG11dGF0ZShZZWFyPXllYXIoUkVGX0RBVEUpLFdlZWs9c3Vic3RyKFJFRl9EQVRFLDYsMTApKSU+JQogIGZpbHRlcihBZ2UuYXQudGltZS5vZi5kZWF0aD09IkFnZSBhdCB0aW1lIG9mIGRlYXRoLCBhbGwgYWdlcyIgJiBTZXg9PSJCb3RoIHNleGVzIiAmIEdFTz09IkNhbmFkYSwgcGxhY2Ugb2Ygb2NjdXJyZW5jZSIsWWVhcj49IjIwMjAiKSU+JQogIHNlbGVjdChSRUZfREFURSxZZWFyLCBXZWVrLCBHRU8sQ2hhcmFjdGVyaXN0aWNzLFZBTFVFKSU+JQogIG5hLm9taXQoKQogV2l0aG91dGM8LVdpdGhvdXRjWy1jKDE6NCksXQpDTzwtQ292aWQlPiUKICBmaWx0ZXIocHJuYW1lPT0iQ2FuYWRhIiklPiUKICBzZWxlY3QoZGF0ZSxudW1kZWF0aHNfbGFzdDcpCiAgY29sbmFtZXMoQ08pWzFdIDwtICJSRUZfREFURSIKCldPTW9ydGFsaXR5PC1XTW9ydGFsaXR5JT4lCiAgbXV0YXRlKFllYXI9eWVhcihSRUZfREFURSksV2Vlaz1zdWJzdHIoUkVGX0RBVEUsNiwxMCkpJT4lCiAgZmlsdGVyKEFnZS5hdC50aW1lLm9mLmRlYXRoPT0iQWdlIGF0IHRpbWUgb2YgZGVhdGgsIGFsbCBhZ2VzIiAmIFNleD09IkJvdGggc2V4ZXMiICYgR0VPPT0iQ2FuYWRhLCBwbGFjZSBvZiBvY2N1cnJlbmNlIiklPiUKICBzZWxlY3QoUkVGX0RBVEUsWWVhciwgV2VlaywgR0VPLENoYXJhY3RlcmlzdGljcyxWQUxVRSkKIFdPTW9ydGFsaXR5PC0gbWVyZ2UoV09Nb3J0YWxpdHksQ08sYnk9IlJFRl9EQVRFIixhbGw9VFJVRSkKIFdPTW9ydGFsaXR5PC0gV09Nb3J0YWxpdHlbLWMoNzA3OjcyMSksXQogV09Nb3J0YWxpdHkkbnVtZGVhdGhzX2xhc3Q3W2lzLm5hKCBXT01vcnRhbGl0eSRudW1kZWF0aHNfbGFzdDcpXSA9IDAKV09Nb3J0YWxpdHklPiUKICBtdXRhdGUoRGVhdGhfd2l0aG91dF9jb3ZpZD1WQUxVRS1udW1kZWF0aHNfbGFzdDcpJT4lCiAgcGxvdF9seSggeD1+V2VlaywgeT1+RGVhdGhfd2l0aG91dF9jb3ZpZCwgY29sb3I9fmZhY3RvcihZZWFyKSx0eXBlID0gInNjYXR0ZXIiLCBtb2RlPSJsaW5lcyIpJT4lCmxheW91dCh3aWR0aCA9IDkwMCwgaGVpZ2h0ID0gNTAwLCB0aXRsZSA9ICdGaWd1cmUyLjEuMjpXZWVrbHkgRGVhdGggQ291bnRzIHdpdGhvdXQgQ09JVkQgY2FzZXMnLHlheGlzID0gbGlzdCh0aXRsZSA9ICJOdW1iZXIgb2YgRGVhdGggd2l0aG91dCBDT1ZJRCIpKQpgYGAKCiMjIFNlY3Rpb24gMjogTG9uZy10ZXJtIEltcGFjdAoKIyMgU2VjdGlvbiAzOiBQcmV2YWxlbmNlIE1vZGVsaW5nCgojIFJlc3VsdAoKIyMgU2VjdGlvbiAxOiBNb3J0YWxpdHkKSW4gb3JkZXIgdG8gZGlzY3VzcyB0aGUgcHJvYmFiaWxpdHkgb2YgQ09WSUQtMTkgZGVhdGggaW4gdGhlIHRvdGFsIGRlYXRoLCB3ZSBmaXJzdCBjYWxjdWxhdGVkIHRoZSBwcm9wb3J0aW9uIGZvciB0aGUgQ09WSUQtMTkgZGVhdGggZnJvbSAyMDIwIHRvIDIwMjMgaW4gVGFibGUgMy4xLjEuIFRvIG91ciBzdXJwcmlzZSwgdGhlIHByb3BvcnRpb24gaW4gMjAyMiBpcyB0aGUgaGlnaGVyIHRoYW4gdGhlIHByb3BvcnRpb24gaW4gMjAyMCwgMC4wNTc0IGFuZCAwLjA0OTAgcmVzcGVjdGl2ZWx5LiBUaGlzIG1pZ2h0IGJlY2F1c2UgdGhlIG91dGJyZWFrIG9mIHRoZSBuZXcgdmFyaWFudCBPbWljcm9uLiBUaGUgcHJvcG9ydGlvbiBpbiAyMDIxIGFuZCAyMDIzIGFyZSByZWxhdGl2ZWx5IGxvdyBtaWdodCBiZWNhdXNlIHRoZSBwb3B1bGF0aW9uIG9mIHZhY2NpbmF0aW9uIGluY3JlYXNlLgpgYGB7cn0KI0NvbnRpbmdlbmN5IHRhYmxlIGZvciBtb3J0YWxpdHkgcmF0ZSBWUyB5ZWFyKE9kZHMgUmF0aW8pCnRkZWF0aDwtV09Nb3J0YWxpdHklPiUKICBmaWx0ZXIoIFllYXI+PSIyMDIwIiklPiUKICBncm91cF9ieShZZWFyKSU+JQogIHN1bW1hcmlzZShUb3RhbERlYXRoPXN1bShWQUxVRSksVG90YWxjb3ZpZGRlYXRoPXN1bShudW1kZWF0aHNfbGFzdDcpLCBDRHJhdGU9VG90YWxjb3ZpZGRlYXRoL1RvdGFsRGVhdGgpClk9cm91bmQodGRlYXRoJENEcmF0ZSw0KQp0Ymw8LWRhdGEuZnJhbWUoY2JpbmQoYygyMDIwLDIwMjEsMjAyMiwyMDIzKSxZLDEtWSkpCmNvbG5hbWVzKHRibCk8LWMoIlllYXIiLCJDb3ZpZCBEZWF0aCIsICJOb3QgQ292aWQgRGVhdGgiKQp0YmwlPiVndCgpJT4ldGFiX2hlYWRlcigKICAgIHRpdGxlID0gIlRhYmxlIDMuMS4xOiBDb250aW5nZW5jeSB0YWJsZSBmb3IgcHJvcG9ydGlvbiBvZiBDT1ZJRC0xOSBkZWF0aCIpCmBgYApUbyB0ZXN0IHRoZSBob21vZ2VuZWl0eSBmb3IgQ09WSUQtMTkgZGVhdGggcHJvYmFiaWxpdHkgY29uZGl0aW9uIG9uIHllYXJzLCB3ZSBjYW4gdXNlIHRoZSBDaGktc3F1YXJlIHRlc3QgYW5kIHRoZSBudWxsIGFuZCBhbHRlcm5hdGl2ZSBoeXBvdGhlc2lzIG9mIGhvbW9nZW5laXR5IGNvcnJlc3BvbmRpbmcgdG86CgpcYmVnaW57Z2F0aGVyKn0KSF8wOlBfe2p8aX1cID1cIFBfe8K3an1cXApIXzE6UF97anxpfVxuZXEgUF97wrdqfQpcZW5ke2dhdGhlcip9CgpgYGB7cn0KIyB0YWJsZShjaGktc3F1YXJlKSB0ZXN0IGhvbW9nZW5laXR5IApZQz10ZGVhdGgkVG90YWxjb3ZpZGRlYXRoCk5DPXRkZWF0aCRUb3RhbERlYXRoLXRkZWF0aCRUb3RhbGNvdmlkZGVhdGgKbnRibDwtZGF0YS5mcmFtZShjYmluZChZQyxOQykpCmNvbG5hbWVzKG50YmwpPC1jKCJDb3ZpZCIsICJOb3QgQ292aWQiKQpudGJscz0gY2JpbmQoYygiMjAyMCIsIjIwMjEiLCIyMDIyIiwiMjAyMyIpLG50YmwpCiAgY29sbmFtZXMobnRibHMpPC1jKCJZZWFyIiwiQ292aWQiLCAiTm90IENvdmlkIikKbnRibHMlPiUKICBndCgpJT4ldGFiX2hlYWRlcigKICAgIHRpdGxlID0gIlRhYmxlIDMuMS4yOiBDb250aW5nZW5jeSB0YWJsZSBmb3IgZGVhdGggY291bnRzIikKY2hpX3NxdWFyZTwtYyhjaGlzcS50ZXN0KG50YmwpJHN0YXRpc3RpYyAsR1Rlc3QobnRibCkkc3RhdGlzdGljKQpwX3ZhbHVlPC1jKGNoaXNxLnRlc3QobnRibCkkcC52YWx1ZSxHVGVzdChudGJsKSRwLnZhbHVlKQp0ZXN0PC1jKCJDaGktc3F1YXRlZCB0ZXN0IiwiTGlrZWxpaG9vZCByYXRpbyB0ZXN0IikKICBDaGk8LWRhdGEuZnJhbWUodGVzdCxjaGlfc3F1YXJlLHBfdmFsdWUpCnNpZ25pZmljYW5jZV9sZXZlbCA8LSAwLjA1CkNoaSU+JQogICBndCgpICU+JQogIHRhYl9oZWFkZXIoCiAgICB0aXRsZSA9ICJUYWJsZTMuMS4zOlJlc3VsdCBmb3IgdGVzdCBob21vZ2VuZWl0eSBiZXR3ZWVuIENPVklELTE5IGRlYXRoIGFuZCBZZWFyIgogICkgJT4lCiAgIGNvbHNfbGFiZWwoCiAgIGNoaV9zcXVhcmUgPSAiQ2hpLVNxdWFyZWQgU3RhdGlzdGljIiwKICAgIHBfdmFsdWUgPSAiUC1WYWx1ZSIsCiAgICB0ZXN0PSJUZXN0IgogICkgJT4lCiAgZm10KAogICAgY29sdW1ucyA9IHZhcnMocF92YWx1ZSksCiAgICBmbnMgPSBmdW5jdGlvbih4KSB7CiAgICAgIGlmZWxzZSh4IDwgc2lnbmlmaWNhbmNlX2xldmVsLCBwYXN0ZSgiPCIsIHNpZ25pZmljYW5jZV9sZXZlbCksIHNwcmludGYoIiUuM2YiLCB4KSkKICAgIH0KICApCmBgYApUaGUgQ2hpLXNxdWFyZXMgc3RhdGlzdGljcyBjb21wdXRlZCBieSBDaGktc3F1YXJlZCB0ZXN0IGFuZCBMaWtlbGlob29kIHJhdGlvIHRlc3QgaXMgZGlmZmVyZW50IGJ1dCB0aGUgcC12YWx1ZSBpcyBsZXNzIHRoYW4gMC4wNSBpbiBib3RoIHRlc3QuIFRodXMgd2UgcmVqZWN0IHRoZSBudWxsIGh5cG90aGVzaXMgdW5kZXIgdGhlIDAuMDUgbGV2ZWwgc2luY2UgdGhlcmUgaGF2ZSAgc3Ryb25nIGV2aWRlbmNlIHRoYXQgZXhpc3Qgc2lnbmlmaWNhbnQgZGlmZmVyZW5jZSBpbiBwcm9iYWJpbGl0eSBpbiBDT1ZJRC0xOSBkZWF0aCBwcm9iYWJpbGl0eSBjb25kaXRpb24gb24geWVhcnMuCgpUaGVuIHdlIGNhbiBjb21wdXRlIHRoZSByZWxhdGl2ZSByaXNrIGFuZCBvZGRzIHJhdGlvIGZvciB5ZWFycyB0byBtZWFzdXJlIHRoZSBhc3NvY2lhdGlvbiBiZXR3ZWVuIHllYXJzIGFuZCBDT1ZJRC0xOSBkZWF0aCBwcm9wb3J0aW9uLiBXZSBjaG9zZSB0aGUgQ09WSUQtMTkgZGVhdGggcHJvcG9ydGlvbiBpbiAyMDIwIHllYXIgYXMgYmFzZWxpbmUgY2F0ZWdvcnkgYW5kIGNvbXB1dGUgdGhlIHJlbGF0aXZlIHJpc2tzIGFuZCBvZGRzIHJhdGlvcy4KCmBgYHtyfQojUmVsYXRpdmUgUmlzawpUYmw8LWFzLm1hdHJpeCh0YmxbLGMoMiwzKV0pClJSMjE9cm91bmQoVGJsWzIsMV0vVGJsWzEsMV0sNCkKUlIyMj1yb3VuZChUYmxbMywxXS9UYmxbMSwxXSw0KQpSUjIzPXJvdW5kKFRibFs0LDFdL1RibFsxLDFdLDQpClJSdGJsPC1kYXRhLmZyYW1lKCJSZWxhdGl2ZSByaXNrIixSUjIxLFJSMjIsUlIyMykKY29sbmFtZXMoUlJ0YmwpPC1jKCJZZWFyIiwgIjIwMjEiLCAiMjAyMiIsIjIwMjMiKQpSUnRibCU+JWd0KCklPiV0YWJfaGVhZGVyKAogICAgdGl0bGUgPSAiVGFibGUgMy4xLjQ6IFJlbGF0aXZlIHJpc2tzIGZvciB0aHJlZSB5ZWFycyIpCmBgYApUYWJsZSAzLjEuNCBzaG93ZWQgdGhlIFJlbGF0aXZlIHJpc2tzIGluIDIwMjEsMjAyMiBhbmQgMjAyMy4gV2UgY2FuIHNlZSB0aGF0IHJlbGF0aXZlIHJpc2tzIGluIDIwMjEsYW5kIDIwMjMgYXJlIGxlc3MgdGhhbiAxLCB3ZSBjYW4gY29uY2x1ZGVkIHRoYXQgaWYgYSBwZW9wbGUgZGllZCBpbiBDT1ZJRC0xOSwgdGhpcyBwZW9wbGUgaXMgbW9yZSBsaWtlbHkgZGllZCBpbiAyMDIwIHRoYW4gMjAyMSBhbmQgMjAyMy4gVGhlIHJlbGF0aXZlIHJpc2sgaW4gMjAyMiBhcmUgZ3JlYXRlciB0aGFuIDEsIHdlIGNhbiBjb25jbHVkZWQgdGhhdCBpZiBhIHBlb3BsZSBkaWVkIGluIENPVklELTE5LCB0aGlzIHBlb3BsZSBpcyBtb3JlIGxpa2VseSBkaWVkIGluIDIwMjIgdGhhbiAyMDIwLgoKYGBge3J9CiNPZGRzIHJhdGlvcwpUYmw8LWFzLm1hdHJpeCh0YmxbLGMoMiwzKV0pCk9SMjE9VGJsWzEsMV0qVGJsWzIsMl0vKFRibFsxLDJdKlRibFsyLDFdKQpPUjIyPVRibFsxLDFdKlRibFszLDJdLyhUYmxbMSwyXSpUYmxbMywxXSkKT1IyMz1UYmxbMSwxXSpUYmxbNCwyXS8oVGJsWzEsMl0qVGJsWzQsMV0pCk9SdGJsPC1kYXRhLmZyYW1lKCJPZGRzIFJhdGlvIixPUjIxLE9SMjIsT1IyMykKY29sbmFtZXMoT1J0YmwpPC1jKCJZZWFyIiwgIjIwMjEiLCAiMjAyMiIsIjIwMjMiKQpPUnRibCU+JWd0KCklPiV0YWJfaGVhZGVyKAogICAgdGl0bGUgPSAiVGFibGUgMy4xLjU6IE9kZHMgcmF0aW8gZm9yIHRocmVlIHllYXJzIikKYGBgCkZyb20gVGFibGUgMy4xLjUsIHdlIGNhbiBzZWUgdGhhdCB0aGUgb2RkcyByYXRpb3MgZm9yIGFsbCB0aHJlZSB5ZWFycyBhcmUgbm90IGVxdWFsIHRvIDEsIHdoaWNoIGluZGljYXRlZCB0aGF0IHRoZXJlIGV4aXN0cyBhc3NvY2lhdGlvbiBiZXR3ZWVuIHllYXIgYW5kIENPVklELTE5IGRlYXRoIHByb3BvcnRpb24uIEZvciBvZGRzIHJhdGlvcyBpbiAyMDIxIGFuZCAyMDIzLCB0aGVyZSBleGlzdCBwb3NpdGl2ZSBhc3NvY2lhdGlvbiBiZXR3ZWVuIHByb2JhYmlsaXR5IG9mIGRlYXRoIGNhdXNlZCBieSBDT1ZJRC0xOS4gVGhlIGFzc29jaWF0aW9uIGluIDIwMjIgaXMgbmVnYXRpdmUgYmV0d2VlbiBwcm9wb3J0aW9uIG9mIENPVklELTE5IGRlYXRoIGluIHRvdGFsIGRlYXRoLiAgIAoKIyMgU2VjdGlvbiAyOiBMb25nLXRlcm0gSW1wYWN0CgojIyBTZWN0aW9uIDM6IFByZXZhbGVuY2UgTW9kZWxpbmcKCiMgRGlzY3Vzc2lvbgoKIyMgU2VjdGlvbiAxOiBNb3J0YWxpdHkKCiMjIFNlY3Rpb24gMjogTG9uZy10ZXJtIEltcGFjdAoKIyMgU2VjdGlvbiAzOiBQcmV2YWxlbmNlIE1vZGVsaW5nCgojIENvbmNsdXNpb24KCiMgUmVmZXJlbmNlcwo=